// utils/fontLoader.js

// 支持的字体格式优先级（WOFF2 > WOFF > TTF）
const FORMAT_PRIORITY = ['woff2', 'woff', 'ttf', 'otf']

// 单个字体加载（支持格式回退）
export const loadFont = async (fontConfig) => {
  // 按优先级排序的URL列表
  const prioritizedUrls = FORMAT_PRIORITY
    .filter(format => fontConfig.formats?.[format])
    .map(format => ({
      url: fontConfig.formats[format],
      format
    }))
  
  if (!prioritizedUrls.length) {
    console.error(`字体 ${fontConfig.family} 未提供有效格式`)
    return false
  }

  // 尝试按优先级加载
  for (const { url, format } of prioritizedUrls) {
    try {
      await new Promise((resolve, reject) => {
        uni.loadFontFace({
          global: fontConfig.global || true,
          family: fontConfig.family,
          source: `url("${url}")`,
          desc: fontConfig.desc || {},
          success: resolve,
          fail: (err) => reject({ url, format, err })
        })
      })
      console.log(`字体 ${fontConfig.family} (${format}) 加载成功`)
      return true
    } catch (error) {
      console.warn(`字体 ${fontConfig.family} (${format}) 加载失败:`, error.err)
    }
  }
  
  console.error(`字体 ${fontConfig.family} 所有格式加载失败`)
  return false
}

// 批量加载字体
export const loadFonts = async (fonts) => {
  const results = {}
  
  for (const font of fonts) {
    results[font.family] = await loadFont(font)
  }
  
  return results
}